package com.pxst.config;

import java.util.HashMap;
import java.util.Map;

import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.CustomExchange;
import org.springframework.amqp.core.FanoutExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.pxst.enums.AmqEnum;

/**
 * 消息队列配置
 * 
 * @author yangxy
 * @version 创建时间：2023年9月4日 上午10:40:21
 */
@Configuration
public class AmqCofig {
	/**
	 * 创建app捞帐延迟交换机
	* @author yangxy
	* @version 创建时间：2023年9月4日 上午10:59:27 
	* @return
	 */
	@Bean
	public CustomExchange delayAppExchange() {
		Map<String, Object> args = new HashMap<String, Object>();
		args.put("x-delayed-type", "direct");
		return new CustomExchange(AmqEnum.APP_SALVAGE_ACCOUNT.exchange, "x-delayed-message", true, false, args);
	}
	
	/**
     * 创建app捞帐消息队列
     * @return
     */
    @Bean
    public Queue delayAppQueue() {
        return new Queue(AmqEnum.APP_SALVAGE_ACCOUNT.queue, true);
    }

    /**
     * 绑定app捞帐交换机和队列
    * @author yangxy
    * @version 创建时间：2023年9月4日 上午10:59:52 
    * @return
     */
    @Bean
    public Binding deplyAppBinding() {
        return BindingBuilder.bind(delayAppQueue()).to(delayAppExchange()).with(AmqEnum.APP_SALVAGE_ACCOUNT.routingKey).noargs();
    }
    
}
